package com.zy.explore.license.domain.mybatis.dao;

import com.zy.explore.license.domain.mybatis.entity.SysEventLog;
import com.zy.explore.license.infrastructure.base.mybatis.MpBaseDao;
import com.zy.explore.license.interfaces.vo.DayPvUvVO;
import com.zy.explore.license.interfaces.vo.LastLoginInfoVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * 系统事件日志刀
 * (表sys_event_log)数据持久层接口
 *
 * @author ChinaYin  主页:https://gitee.com/zy-explorej2ee 邮箱:zyexplorej2ee@sina.com
 * @date 2021年06月13日 12:48:16
 */
public interface SysEventLogDao extends MpBaseDao<SysEventLog> {

    /**
     * 查询用户上次登录信息
     *
     * @param userId 用户ID
     * @return 返回上次登录信息
     */
    LastLoginInfoVO getLastLoginInfo(@Param("userId") Integer userId);

    /**
     * 查询时间范围内的访问次数
     *
     * @param beginDate 开始日期
     * @param endDate 结束日期
     * @return 返回访问次数
     */
    int getVisitNum(@Param("beginDate") String beginDate, @Param("endDate") String endDate);

    /**
     * 查询时间范围内的访客数
     *
     * @param beginDate 开始日期
     * @param endDate 结束日期
     * @return 返回访问数
     */
    int getVisitorNum(@Param("beginDate") String beginDate, @Param("endDate") String endDate);

    /**
     * 查询时间范围内生成项目的次数
     *
     * @param beginDate 开始日期
     * @param endDate 结束日期
     * @return 返回生成项目的次数
     */
    int getGenProjectNum(@Param("beginDate") String beginDate, @Param("endDate") String endDate);

    /**
     * 查询时间范围内生成表相关类的次数
     *
     * @param beginDate 开始日期
     * @param endDate 结束日期
     * @return 返回生成表相关类的次数
     */
    int getGenTableClassNum(@Param("beginDate") String beginDate, @Param("endDate") String endDate);

    /**
     * 查询首页最近N天访问数据
     *
     * @param recentDays 最近天数
     * @return 返回统计数据集合
     */
    List<DayPvUvVO> getRecentVisitData(@Param("recentDays") int recentDays);
}